"use strict";
const common_vendor = require("../../common/vendor.js");
const utils_index = require("../../utils/index.js");
const __unplugin_components_1 = () => "../../node-modules/wot-design-uni/components/wd-button/wd-button.js";
const __unplugin_components_0 = () => "../../node-modules/wot-design-uni/components/wd-icon/wd-icon.js";
if (!Array) {
  const _component_wd_icon = __unplugin_components_0;
  const _component_wd_button = __unplugin_components_1;
  const _component_layout_default_uni = common_vendor.resolveComponent("layout-default-uni");
  (_component_wd_icon + _component_wd_button + _component_layout_default_uni)();
}
const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
  __name: "index",
  setup(__props) {
    const imageList = common_vendor.ref([]);
    const fileObj = common_vendor.ref(null);
    const imageBase64List = common_vendor.ref([]);
    const imageFormat = common_vendor.ref("jpeg");

    function chooseImage() {
      if (typeof window !== "undefined") {
        const input = document.createElement("input");
        input.type = "file";
        input.accept = "image/*";
        input.multiple = true;
        input.onchange = (e) => {
          const target = e.target;
          if (target.files && target.files.length > 0) {
            // 追加图片而不是替换，确保不超过9张
            const newFiles = Array.from(target.files);
            const remainingSlots = 9 - imageList.value.length;
            const filesToAdd = newFiles.slice(0, remainingSlots);

            // 合并文件对象
            if (fileObj.value) {
              fileObj.value = fileObj.value.concat(filesToAdd);
            } else {
              fileObj.value = filesToAdd;
            }

            filesToAdd.forEach((file, index) => {
              var _a;
              const tempUrl = URL.createObjectURL(file);
              imageList.value.push(tempUrl);
              const fileName = file.name;
              const extension = (_a = fileName.split("").pop()) == null ? void 0 : _a.toLowerCase();
              imageFormat.value = extension === "png" ? "png" : extension === "webp" ? "webp" : "jpeg";
              const reader = new FileReader();
              reader.onload = function(e2) {
                if (e2.target && e2.target.result) {
                  imageBase64List.value.push(e2.target.result);
                }
              };
              reader.readAsDataURL(file);
            });
          }
        };
        input.click();
      } else {
        common_vendor.index.chooseImage({
          count: 9 - imageList.value.length, // 限制最多选择9张图片
          success: (res) => {
            const tempFilePaths = res.tempFilePaths;
            // 追加图片而不是替换
            imageList.value = imageList.value.concat(tempFilePaths);

            tempFilePaths.forEach((filePath, index) => {
              var _a;
              const extension = (_a = filePath.split("").pop()) == null ? void 0 : _a.toLowerCase();
              imageFormat.value = extension === "png" ? "png" : extension === "webp" ? "webp" : "jpeg";
              common_vendor.index.getFileSystemManager().readFile({
                filePath,
                encoding: "base64",
                success: (result) => {
                  const base64 = `data:image/${imageFormat.value};base64,${result.data}`;
                  imageBase64List.value.push(base64);
                },
                fail: (error) => {
                  console.error(`图片${index + 1}转base64失败:`, error);
                }
              });
            });
          }
        });
      }
    }

    function removeImage(index) {
      if (index !== undefined) {
        // 删除指定索引的图片
        imageList.value.splice(index, 1);
        imageBase64List.value.splice(index, 1);
      } else {
        // 清空所有图片数据
        imageList.value = [];
        imageBase64List.value = [];
        fileObj.value = null;
      }
    }

    async function analyzeText() {
      if (utils_index.checkUsageLimit()) {
        common_vendor.index.showToast({
          title: "今日使用次数已达上限，请明天再来",
          icon: "none",
          duration: 3e3
        });
        return;
      }

      if (imageList.value.length === 0) {
        common_vendor.index.showToast({
          title: "请上传聊天截图",
          icon: "none"
        });
        return;
      }

      if (imageBase64List.value.length === 0) {
        common_vendor.index.showToast({
          title: "图片加载中，请稍候",
          icon: "none"
        });
        return;
      }

      // 开始分析，显示进度条
      isLoading.value = true;
      updateProgress(10, "开始分析聊天记录...");
    
      try {
        // 第一步：检查第一张图片是否包含聊天记录
        updateProgress(20, "检查聊天记录内容...");
        const chatDetectionResult = await utils_index.callDoubanApi([
          {
            "role": "system",
            "content": '你是一个专业的图像分析专家，任务是判断图片中是否包含聊天记录。请严格按照以下要求进行分析：\n1. 如果图片中明显包含聊天记录界面、对话气泡或大量文字交流内容，请返回：{"hasChatContent": true}\n2. 如果图片中不包含聊天记录相关内容，请返回：{"hasChatContent": false}\n3. 请严格按照JSON格式返回，不要添加额外文字。'
          },
          {
            "role": "user",
            "content": [
              {
                "type": "text",
                "text": "请判断这张图片中是否包含聊天记录内容"
              },
              {
                "type": "image_url",
                "image_url": {
                  url: imageBase64List.value[0]
                }
              }
            ]
          }
        ]);
    
        const chatDetectionResponse = chatDetectionResult.choices[0].message.content;
    
        let chatDetectionData;
        try {
          chatDetectionData = JSON.parse(chatDetectionResponse);
        } catch (e) {
          console.error("聊天记录检测结果解析失败:", e);
          common_vendor.index.showToast({
            title: "聊天记录检测失败，请重试",
            icon: "error"
          });
          return;
        }
    
        if (!chatDetectionData.hasChatContent) {
          common_vendor.index.showToast({
            title: "请上传有效的聊天记录截图",
            icon: "none",
            duration: 3e3
          });
          return;
        }
    
        // 第二步：如果上传了多张图片，判断是否是同一个聊天记录
        let isSameChatRecord = true;
        if (imageBase64List.value.length > 1) {
          updateProgress(40, "正在比对聊天记录...");
    
          // 创建一个包含所有图片的消息，用于判断是否为同一聊天记录
          const multiImageCheckMessages = [
            {
              "role": "system",
              "content": '你是一个专业的图像分析专家，任务是判断多张图片中是否包含同一个聊天记录。请严格按照以下要求进行分析：\n1. 检查所有图片中的聊天记录界面、对话气泡、头像、用户名等元素\n2. 判断这些图片是否属于同一个聊天对话（特别是看头像是否一致）\n3. 如果所有图片都属于同一个聊天记录（例如都是A和B的聊天记录），请返回：{"isSameChat": true}\n4. 如果图片不属于同一个聊天记录，请返回：{"isSameChat": false}\n5. 请严格按照JSON格式返回，不要添加额外文字。'
            },
            {
              "role": "user",
              "content": [
                {
                  "type": "text",
                  "text": "请判断这些图片是否包含同一个聊天记录（通过头像和对话内容判断）"
                }
              ]
            }
          ];
    
          // 将所有图片添加到消息中
          imageBase64List.value.forEach((base64) => {
            multiImageCheckMessages[1].content.push({
              type: "image_url",
              image_url: {
                url: base64
              }
            });
          });
    
          // 调用API进行判断
          const multiImageCheckResult = await utils_index.callDoubanApi(multiImageCheckMessages);
          const multiImageCheckResponse = multiImageCheckResult.choices[0].message.content;
    
          let multiImageCheckData;
          try {
            multiImageCheckData = JSON.parse(multiImageCheckResponse);
          } catch (e) {
            console.error("多图一致性判断结果解析失败:", e);
            // 如果解析失败，默认视为不同的聊天记录
            isSameChatRecord = false;
          }
    
          if (multiImageCheckData && multiImageCheckData.isSameChat !== undefined) {
            isSameChatRecord = multiImageCheckData.isSameChat;
          }
    
          // 如果不是同一个聊天记录，提示用户
          if (!isSameChatRecord) {
            common_vendor.index.hideLoading();
            common_vendor.index.showToast({
              title: "检测到不是同一个聊天记录，请仅上传同一对话的截图",
              icon: "none",
              duration: 3e3
            });
            return;
          }
        }
    
        // 第三步：进行情感分析
        updateProgress(60, "分析情感状态...");
        
        const messages = [
          {
            role: "system",
            content: '你现在扮演一个经验丰富、魅力四射的聊天高手（海王），精通男女互动的艺术，擅长用自然、幽默、有魅力的方式吸引异性注意力并建立深度连接。你的任务是分析用户提供的聊天截图，帮助用户生成高情商、有吸引力的回复。\n      \n      请注意以下关键点：\n      1. 深入分析对方的聊天风格、用词习惯和情绪状态，精准捕捉其兴趣点和心理需求\n      2. 回复建议必须自然流畅，完全口语化，仿佛是真实聊天中的即兴发挥，绝不能有任何模板化或AI生成的痕迹\n      3. 根据对方性格特点，巧妙融入幽默调侃、暧昧暗示或价值展示，但始终保持轻松自信的态度\n      4. 创造适当的不确定性和神秘感，激发对方的好奇心和探索欲\n      5. 回复中可以加入符合聊天场景的表情符号、语气词（如「哈哈」、「~」、「✨」等），增强真实感\n      6. 避免过于直接或暴露需求感的表达，学会欲擒故纵\n      7. 根据对话进展，适时引导话题方向，保持聊天的趣味性和延续性\n      \n      请以以下JSON格式返回结果：\n      {\n        "emotionalState": "积极|中性|消极",\n        "对方心理活动": "深度解析对方当前的真实心理状态和隐藏需求",\n        "对方看法": "分析对方可能对你的真实看法和兴趣程度",\n        "interestLevel": 0-100的数值,\n        "replySuggestions": ["自然幽默的日常回复", "略带暧昧的暗示回复", "展示价值的引导回复"],\n        "topicSuggestions": "能够延续聊天并增加吸引力的具体话题建议",\n        "conversationSkills": "关键接话技巧和氛围营造方法",\n        "impressionMethods": "如何在聊天中建立吸引力和神秘感的实用技巧"\n      }\n      \n      记住：回复要让用户觉得这就是他自己会说的话，但更有魅力、更机智。避免使用过于正式或生硬的语言，让对话充满温度和人性化的感觉。你的目标是帮助用户成为一个令人难以抗拒的聊天对象。'
          },
          {
            role: "user",
            content: []
          }
        ];
    
        imageBase64List.value.forEach((base64) => {
          messages[1].content.push({
            type: "image_url",
            image_url: {
              url: base64
            }
          });
        });
    
        updateProgress(80, "生成分析报告...");
        const result = await utils_index.callDoubanApi(messages);
    
        updateProgress(100, "分析完成！");
        
        // 延迟显示完成状态
        await new Promise(resolve => setTimeout(resolve, 500));
        
        utils_index.increaseUserUsageCount();
        await common_vendor.nextTick$1();
        common_vendor.index.navigateTo({
          url: `/pages/love-clinic/result?result=${encodeURIComponent(JSON.stringify(result))}`
        });
      } catch (error) {
        console.error("分析失败:", error);
        common_vendor.index.showToast({
          title: "分析失败，请重试",
          icon: "none"
        });
      } finally {
        // 隐藏进度条
        isLoading.value = false;
        progressValue.value = 0;
        progressText.value = "准备分析中...";
      }
    }

    function navigateBack() {
      // 清空图片数据
      removeImage();

      // 检查页面栈，如果只有一个页面则返回首页，否则正常返回
      const pages = getCurrentPages();
      if (pages.length === 1) {
        // 如果是首页，跳转到首页
        common_vendor.index.switchTab({
          url: '/pages/index/index'
        });
      } else {
        common_vendor.index.navigateBack();
      }
    }
    return (_ctx, _cache) => {
      return common_vendor.e({
        a: common_vendor.p({
          name: "arrow-left",
          size: "20px"
        }),
        b: common_vendor.o(navigateBack),
        c: common_vendor.p({
          name: "heart",
          size: "16px",
          color: "#FF6B8B"
        }),
        d: imageList.value.length === 0
      }, imageList.value.length === 0 ? {
        e: common_vendor.p({
          name: "upload",
          size: "40rpx",
          color: "#ccc"
        })
      } : common_vendor.e({
        f: common_vendor.f(imageList.value, (image, index, i0) => {
          return {
            a: image,
            b: "941161ba-4-" + i0 + ",941161ba-0",
            c: common_vendor.o(($event) => removeImage(index), index),
            d: index
          };
        }),
        g: common_vendor.p({
          name: "close",
          size: "16px",
          color: "#fff"
        }),
        h: imageList.value.length < 9
      }, imageList.value.length < 9 ? {
        i: common_vendor.p({
          name: "plus",
          size: "24rpx",
          color: "#ccc"
        }),
        j: common_vendor.o(chooseImage)
      } : {}), {
        k: common_vendor.o(chooseImage),
        l: common_vendor.o(analyzeText),
        m: common_vendor.p({
          type: "primary"
        }),
        // 进度条数据绑定
        n: isLoading.value,
        o: progressValue.value,
        p: progressText.value
      });
    };
  }
});
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-941161ba"]]);
wx.createPage(MiniProgramPage);

// 进度条相关状态
const isLoading = common_vendor.ref(false);
const progressValue = common_vendor.ref(0);
const progressText = common_vendor.ref("准备分析中...");

// 更新进度条
function updateProgress(value, text) {
  progressValue.value = value;
  progressText.value = text;
}
